package com.example.rbac.utils;

/**
 * 用户上下文工具类，使用ThreadLocal存储用户信息
 */
public class UserContext {
    
    // 使用ThreadLocal存储用户ID
    private static final ThreadLocal<Long> USER_ID_HOLDER = new ThreadLocal<>();
    
    // 使用ThreadLocal存储用户名
    private static final ThreadLocal<String> USERNAME_HOLDER = new ThreadLocal<>();
    
    /**
     * 设置用户ID
     */
    public static void setUserId(Long userId) {
        USER_ID_HOLDER.set(userId);
    }
    
    /**
     * 获取用户ID
     */
    public static Long getUserId() {
        return USER_ID_HOLDER.get();
    }
    
    /**
     * 设置用户名
     */
    public static void setUsername(String username) {
        USERNAME_HOLDER.set(username);
    }
    
    /**
     * 获取用户名
     */
    public static String getUsername() {
        return USERNAME_HOLDER.get();
    }
    
    /**
     * 清理ThreadLocal中的数据，防止内存泄漏
     */
    public static void clear() {
        USER_ID_HOLDER.remove();
        USERNAME_HOLDER.remove();
    }
}